#include <iostream>
#include <string>

using namespace std;

class Date 
{
public:
    Date(int year = 0, int month = 0, int day = 0)
        : year_(year), month_(month), day_(day) {}
    void Display() const 
    {
        cout << year_ << "-" << month_ << "-" << day_ << endl;
    }

private:
    int year_;
    int month_;
    int day_;
};

class Person 
{
public:
    Person(int id = 0, const string& name = "", char gender = 'M',
        const Date& birthday = Date(), const string& id_number = "")
        : id_(id), name_(name), gender_(gender), birthday_(birthday),
        id_number_(id_number) {}
    Person(const Person& rhs)
        : id_(rhs.id_), name_(rhs.name_), gender_(rhs.gender_),
        birthday_(rhs.birthday_), id_number_(rhs.id_number_) {}
    ~Person() {}

    void Display() const 
    {
        cout << "id: " << id_ << endl
            << "name: " << name_ << endl
            << "gender: " << gender_ << endl
            << "birthday: ";
        birthday_.Display();
        cout << "id number: " << id_number_ << endl;
    }

private:
    int id_;
    string name_;
    char gender_;
    Date birthday_;
    string id_number_;
};

int main() 
{
    Date birthday(1990, 1, 1);
    Person person(1, "Tom", 'M', birthday, "421302200104304230");
    person.Display();
    return 0;
}